/*
J2ME: The Complete Reference

James Keogh

Publisher: McGraw-Hill

ISBN 0072227109

 */
//jad file (please verify the jar size)
/*
 MIDlet-Name: GameActionExample
 MIDlet-Version: 1.0
 MIDlet-Vendor: MyCompany
 MIDlet-Jar-URL: GameActionExample.jar
 MIDlet-1: GameActionExample, , GameActionExample
 MicroEdition-Configuration: CLDC-1.0
 MicroEdition-Profile: MIDP-1.0
 MIDlet-JAR-SIZE: 100

 */
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class GameActionExample extends MIDlet {
	private Display display;
	private MyCanvas canvas;

	public GameActionExample() {
		display = Display.getDisplay(this);
		canvas = new MyCanvas(this);
	}

	protected void startApp() {
		display.setCurrent(canvas);
	}

	protected void pauseApp() {
	}

	protected void destroyApp(boolean unconditional) {
	}

	public void exitMIDlet() {
		destroyApp(true);
		notifyDestroyed();
	}
}

class MyCanvas extends Canvas implements CommandListener {
	private Command exit;
	private String message;
	private GameActionExample gameActionExample;
	private int x, y;

	public MyCanvas(GameActionExample gameActionExample) {
		x = 5;
		y = 5;
		message = "Use Game Keys";
		this.gameActionExample = gameActionExample;
		exit = new Command("Exit", Command.EXIT, 1);
		addCommand(exit);
		setCommandListener(this);
	}

	protected void paint(Graphics graphics) {
		graphics.setColor(255, 255, 255);
		graphics.fillRect(0, 0, getWidth(), getHeight());
		graphics.setColor(255, 0, 0);
		graphics.drawString(message, x, y, Graphics.TOP | Graphics.LEFT);
	}

	public void commandAction(Command command, Displayable displayable) {
		if (command == exit) {
			gameActionExample.exitMIDlet();
		}
	}

	protected void keyPressed(int key) {
		switch (getGameAction(key)) {
		case Canvas.UP:
			message = "up";
			y--;
			break;
		case Canvas.DOWN:
			message = "down";
			y++;
			break;
		case Canvas.LEFT:
			message = "left";
			x--;
			break;
		case Canvas.RIGHT:
			message = "right";
			x++;
			break;
		case Canvas.FIRE:
			message = "FIRE";
			break;
		}
		repaint();
	}
}